/**
 * 给你一个整数数组 cost ，其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。
 *
 * 一旦你支付此费用，即可选择向上爬一个或者两个台阶。
 *
 * 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
 *
 * 请你计算并返回达到楼梯顶部的最低花费。
 */
public class Test746 {

    public static void main(String[] args) {
        int[] cost = {10,15,20};
        minCostClimbingStairs(cost);
    }
    public static int minCostClimbingStairs(int[] cost) {
        if (cost.length == 2) return Math.min(cost[0],cost[1]);

        int prev2 = 0;// 跳两步到达
        int prev1 = 0;// 跳一步到达
        int costs = 0;
        for (int i = 2; i <= cost.length; i++) {
            costs = Math.min(prev2+cost[i-2],prev1+cost[i-1]);
            prev2 = prev1;
            prev1 = costs;
        }
        return costs;
    }
}
